/**
 * Order 业务逻辑
 * @author WangXinLei
 * @date 2014-11-05
 */
package com.chnbst.bstyun.service;

import java.util.List;
import java.util.Map;

import com.chnbst.bstyun.model.pojo.Cashflow;
import com.chnbst.bstyun.model.pojo.User;
import com.chnbst.bstyun.model.vo.CashflowVo;

public interface CashflowService {

	/**
	 * 查询现金收支明细
	 * @param cashflowId 现金收支明细主键
	 * @return 返回现金收支明细
	 */
	CashflowVo selectByCashflowId(Integer cashflowId);
	
	/**
	 * 删除现金收支明细
	 * @param cashflowId 现金收支明细主键
	 * @return true 删除成功  false 删除失败
	 */
	boolean deleteByCashflowId(Integer cashflowId);
	
	/**
	 * 添加现金收支明细
	 * @param cashflow 现金收支明细信息
	 * @return 返回自动增长变量
	 */
	boolean insertCashflow(Cashflow cashflow);
	
	/**
	 * 更新现金收支明细
	 * @param cashflow 现金收支明细信息
	 * @return 返回自动增长变量
	 */
	boolean updateByCashflowId(Cashflow cashflow);

	/**
	 * 根据时间查询 现金收支明细
	 * @param map 不定条件
	 * @return 返回现金收支明细list
	 */
	List<CashflowVo> selectCashflowsByCondition(Map<String, Object> map);
	
	/**
	 * 根据交易类型查询 该种类型的最大编号
	 * @param dealType 交易类型
	 * @return 返回该种类型的最大编号的单条数据
	 */
	String selectBigNumByDealType(String dealType);
	
	/**
	 * 根据现金收支单号查询现金收支明细
	 * @param cashflowId 现金收支明细主键
	 * @return 返回现金收支明细
	 */
	List<CashflowVo> selectCashflows(Map<String, Object> map);
	
	 /**
     * 根据用户ID 查询 所有信息
     * @param userId
     * @return 返回 用户所有信息
     */
	CashflowVo selectCashflowsByUserId(Integer userId);
	
	/**
     * 根据交易方式 查询 账户总余额
     * @param payWayId
     * @return 返回 账户总余额
     */
	Double selectAccountMoneyByPayWayId(Integer payWayId);
	
	/**
     * 根据条件查询现金收支明细总数
     * @param map
     * @return 返回现金收支明细总数
     */
    int selectCashflowsCountByPayWayId(Map<String, Object> map);
	
	/**
	 * 根据支付方式查询现金收支明细
	 * @param 
	 * @return 返回现金收支明细列表
	 */
	List<CashflowVo> selectCashflowsByPayWayId(Map<String, Object> map);
	
	/**
     * 根据交易流水号 查询 详细信息
     * @param cashflowNum
     * @return 返回 cashflow对象所有信息
     */
	CashflowVo selectCashflowByCashflowNum(String cashflowNum);
}
